package com.rede.didiok.user.entity;

import java.util.Date;
import java.util.List;

import lombok.Data;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.rede.didiok.common.entity.SuperEntity;

/**
 * 用户表
 * 
 * @author Rede
 * @email didiok@foxmail.com
 * @date 2023-08-07 18:21:17
 */
@Data
@TableName("u_user")
public class UserEntity  extends SuperEntity<UserEntity> {

	private static final long serialVersionUID = -5416069592754324562L;
	/**
	 * 用户名
	 */
	private String userName;
	/**
	 * 密码
	 */
	private String password;
	/**
	 * 性别(1:男2:女)
	 */
	private Integer gender;
	/**
	 * 注册模式：1:正常情况下注册 2:小程序提交审核期间注册
	 */
	private Integer registerMode;
	/**
	 * 个人头像
	 */
	private String avatar;
	/**
	 * 邮箱
	 */
	private String email;
	/**
	 * 出生年月日
	 */
	private Date birthday;
	/**
	 * 手机
	 */
	private String mobile;
	/**
	 * 邮箱验证码
	 */
	private String validCode;
	/**
	 * 自我简介最多150字
	 */
	private String summary;
	/**
	 * 登录次数
	 */
	private Integer loginCount;
	/**
	 * 最后登录时间
	 */
	private Date lastLoginTime;
	/**
	 * 最后登录IP
	 */
	private String lastLoginIp;

	/**
	 * 昵称
	 */
	private String nickname;
	/**
	 * 资料来源
	 */
	private String source;
	/**
	 * 平台uuid(使用第三方登录时，关联的社交账号uid)
	 */
	private String socialUid;
	/**
	 * QQ号
	 */
	private String qqNumber;
	/**
	 * 微信号
	 */
	private String weChat;
	/**
	 * 职业
	 */
	private String occupation;
	/**
	 * 评论状态 1:正常 0:禁言
	 */
	private Integer commentStatus;
	/**
	 * ip来源
	 */
	private String ipSource;
	/**
	 * 浏览器
	 */
	private String browser;
	/**
	 * 操作系统
	 */
	private String os;
	/**
	 * 是否开启邮件通知 1:开启 0:关闭
	 */
	private Integer startEmailNotification;
	/**
	 * 用户标签：0：普通用户，1：管理员，2：博主 等
	 */
	private Integer userTag;
	/**
	 * 是否通过加载校验【0 未通过，1 已通过】
	 */
	private Integer loadingValid;
	/**
	 * 积分
	 */
	private Integer credits;
	/**
	 * 个人中心背景图片
	 */
	private String backgroundFileUid;
	/**
	 * 编辑器模式，(0：富文本编辑器CKEditor，1：markdown编辑器Veditor)
	 */
	private Integer editorModel;

	/**
	 * 用户经验值【用户经验的获取逻辑和积分一致，但是不受积分扣除的影响】
	 */
	private Integer expValue;

	/**
	 * 用户钱包金额【单位分】
	 */
	private Long amount;

	/**
	 * 用户权限Code，用来控制用户特权
	 */
	private String authCodeList;


	// 以下字段不存入数据库

	/**
	 * 用户头像
	 */
	@TableField(exist = false)
	private String photoUrl;

	/**
	 * 是否关注过该用户
	 */
	@TableField(exist = false)
	private Boolean isWatchUser;

	/**
	 * 博客发布数
	 */
	@TableField(exist = false)
	private Integer rankMemberPublishCount;

	/**
	 * 问答发布数
	 */
	@TableField(exist = false)
	private Integer questionPublishCount;

	/**
	 * 榜单成员评论发布数
	 */
	@TableField(exist = false)
	private Integer memberCommentPublishCount;

	/**
	 * 用户动态评论发布数
	 */
	@TableField(exist = false)
	private Integer momentCommentPublishCount;

	/**
	 * 博客访问数
	 */
	@TableField(exist = false)
	private Integer blogVisitCount;

	/**
	 * 动态发表数
	 */
	@TableField(exist = false)
	private Integer momentPublishCount;

	/**
	 * 问题发布数
	 */
	@TableField(exist = false)
	private Integer problemPublishCount;


	/**
	 * 背景图片
	 */
	@TableField(exist = false)
	private String backgroundFileUrl;

	/**
	 * 点赞数
	 */
	@TableField(exist = false)
	private Integer praiseCount;

	/**
	 * 关注状态
	 */
	@TableField(exist = false)
	private Integer userWatchStatus;

	/**
	 * 关注人数
	 */
	@TableField(exist = false)
	private Integer userWatchCount;

	/**
	 * 粉丝数
	 */
	@TableField(exist = false)
	private Integer userFollowCount;

	/**
	 * 动态发布数
	 */
	@TableField(exist = false)
	private Integer userMomentCount;

	/**
	 * 用户收藏数
	 */
	@TableField(exist = false)
	private Integer userCollectCount;

	/**
	 * 用户勋章数
	 */
	@TableField(exist = false)
	private Integer userMedalCount;

	/**
	 * 用户获得的勋章列表
	 */
	@TableField(exist = false)
	private List<MedalEntity> userMedalList;

	/**
	 * 用户评论数
	 */
	@TableField(exist = false)
	private Integer memberCommentCount;

	/**
	 * 用户评论数
	 */
	@TableField(exist = false)
	private Integer momentCommentCount;

	/**
	 * 用户等级
	 */
	@TableField(exist = false)
	private Integer userLevel;

	/**
	 * 用户ip属地
	 */
	@TableField(exist = false)
	private String userIpPossession;

	/**
	 * 用戶排名
	 */
	@TableField(exist = false)
	private Integer rank;

	/**
	 * 下一等级所需积分
	 */
	@TableField(exist = false)
	private Integer levelMaxCredits;

	/**
	 * 一周访问量
	 */
	@TableField(exist = false)
	private Integer webVisitCountByWeek;

	/**
	 * 一周点赞量
	 */
	@TableField(exist = false)
	private Integer praiseCountByWeek;

	/**
	 * 是否新创建的用户
	 */
	@TableField(exist = false)
	private int isNewUser;

}
